namespace Brjnk.GpxExplorer.Data
{
    using System;
    using Brjnk.Common;

    /// <summary>
    /// </summary>
    public class WaypointDefault : Waypoint
    {
        private string comment;

        private string description;

        private GeocacheInfo geocache;

        private Distance? elevation;

        private Link link;

        private string name;

        private GpsCoordinates position;

        private WaypointSymbol? symbol;

        private DateTime? time;

        public override Common.GpsCoordinates Position
        {
            get
            {
                return position;
            }
            set
            {
                position = value;
                OnPropertyChanged("Position");
            }
        }

        public override string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
                OnPropertyChanged("Name");
            }
        }

        public override string Comment
        {
            get
            {
                return comment;
            }
            set
            {
                comment = value;
                OnPropertyChanged("Comment");
            }
        }

        public override Distance? Elevation
        {
            get
            {
                return elevation;
            }
            set
            {
                elevation = value;
                OnPropertyChanged("Elevation");
            }
        }

        public override Link Link
        {
            get
            {
                return link;
            }
            set
            {
                link = value;
                OnPropertyChanged("Link");
            }
        }

        public override string Description
        {
            get
            {
                return description;
            }
            set
            {
                description = value;
                OnPropertyChanged("Description");
            }
        }

        public override DateTime? Time
        {
            get
            {
                return time;
            }
            set
            {
                time = value;
                OnPropertyChanged("Time");
            }
        }

        public override GeocacheInfo Geocache
        {
            get
            {
                return geocache;
            }
            set
            {
                geocache = value;
                OnPropertyChanged("Geocache");
            }
        }

        public override WaypointSymbol? Symbol
        {
            get
            {
                return symbol;
            }
            set
            {
                symbol = value;
                OnPropertyChanged("Symbol");
            }
        }
    }
}